package com.pronhub.luowowo.service;


import com.pronhub.luowowo.vo.StrategyStatisVO;

import java.util.List;

/**
 * 攻略统计数据redis缓存操作服务
 * 1:阅读  回复 分享点赞 收藏 数操作
 * 2:排行
 */
public interface IStrategyStatisRedisService {


    /**
     * 阅读量增加
     * @param id
     * @param i
     */
    void viewNumIncrease(Long id, int i);

    /**
     * 获取统计vo对象
     * @param id
     * @return
     */
    StrategyStatisVO getStrategyStatisVo(Long id);

    /**
     * 评论数增加
     * @param detailId
     * @param i
     */
    void replyNumIncrease(Long detailId, int i);

    /**
     * 攻略收藏或者取消
     * @param sid 文章的id
     * @param uid   用户的id
     * @return true: 成功收藏  false:取消收藏
     */
    boolean favor(Long sid, Long uid);

    /**
     * 点赞
     * @param sid
     * @param id
     * @return true: 顶成功  false:今天已经顶过了
     */
    boolean  thumbup(Long sid, Long id);

    /**
     * 设置vo对象
     * @param vo
     */
    void setStrategyStatisVO(StrategyStatisVO vo);

    /**
     * 判断vo对象是否存在
     * @param id
     * @return true:存在, false 不存在
     */
    boolean isStrategyStatisVOExsit(Long id);

    /**
     * 通过指定的key表达式,获取所有vo对象
     * @param pattern
     * @return
     */
    List<StrategyStatisVO> getStrategyStatisVOS(String pattern);

    /**
     * 给排行攻略推荐加分
     * @param value 名字
     * @param score 数值
     */
    void addCommendScores(String value, int score);
    /**
     * 获取热门排行攻略推荐加分
     * @param value
     * @param score
     */
    void addHotScores(String value, int score);
    /**
     * 获取攻略推荐排行中所有的vo对象
     * @return
     */
    List<StrategyStatisVO> getAllVOByZset();
    /**
     * 获取热门攻略推荐排行中前10个vo对象
     * @return
     */
    List<StrategyStatisVO> getHotTop10();

    /**
     * 判断zset中value是否存在
     * @param key
     * @param value
     * @return true: 存在  false: 不存在
     */
    boolean isZsetHasValue(String key, String value);
}
